package com.kedll.library.util;

import android.widget.BaseAdapter;

import java.util.Collection;
import java.util.List;

/**
 * 列表检查辅助类
 * Created by yangweirong on 14/12/13.
 */
public class CollectionUtils {

    /**
     * 获取列表的长度
     *
     * @param c
     * @return
     */
    public static int size(Collection c) {
        return c == null ? 0 : c.size();
    }

    /**
     * 获取数组的长度
     *
     * @param c
     * @return
     */
    public static int size(Object[] c) {
        return c == null ? 0 : c.length;
    }

    /**
     * 获取adapter的count
     *
     * @param adapter
     * @return
     */
    public static int size(BaseAdapter adapter) {
        return adapter == null ? 0 : adapter.getCount();
    }

    /**
     * 判断list是否为空
     *
     * @param c
     * @return
     */
    public static boolean isEmpty(Collection c) {
        return c == null || c.size() == 0;
    }

    /**
     * 判断list是否不为空
     *
     * @param c
     * @return
     */
    public static boolean isNotEmpty(Collection c) {
        return !isEmpty(c);
    }


    /**
     * 获取列表指定位置的值
     *
     * @param lst
     * @param pos
     * @param <E>
     * @return
     */
    public static <E> E get(List<E> lst, int pos) {
        if (isEmpty(lst) || pos < 0 || pos >= lst.size()) {
            return null;
        }
        return lst.get(pos);
    }

    /**
     * 获取列表首位
     *
     * @param lst
     * @param <E>
     * @return
     */
    public static <E> E first(List<E> lst) {
        return get(lst, 0);
    }

    /**
     * 获取列表最后一位
     *
     * @param lst
     * @param <E>
     * @return
     */
    public static <E> E last(List<E> lst) {
        if (isEmpty(lst)) {
            return null;
        }
        return get(lst, lst.size() - 1);
    }

    /**
     * 判断数组是否为空
     *
     * @param arr
     * @return
     */
    public static <E> boolean isEmpty(E[] arr) {
        return arr == null || arr.length == 0;
    }


    /**
     * 判断数组是否不为空
     * @param arr
     * @param <E>
     * @return
     */
    public static <E> boolean isNotEmpty(E[] arr) {
        return !isEmpty(arr);
    }

    /**
     * 通过下标获取数组中的值
     * @param arr
     * @param idx
     * @param <E>
     * @return
     */
    public static <E> E indexAt(E[] arr, int idx) {
        if (arr == null || arr.length == 0 || arr.length <= idx) {
            return null;
        }
        return arr[idx];
    }
}
